{$CLEO .cs}
thread "Sticky_Camera"

:Sticky_Camera_1
wait 0 
   Player.Defined($PLAYER_CHAR)
else_jump @Sticky_Camera_1 
if 
04C8: actor $PLAYER_ACTOR driving_flying_vehicle
else_jump @Sticky_Camera_1
0@ = Actor.CurrentCar($PLAYER_ACTOR)
if 
0AB0:   key_pressed 219
else_jump @Sticky_Camera_1
0AB1: call_scm_func @Sticky_Camera_100 1 0@ 1@ 2@  

:Sticky_Camera_2
wait 0
if
04C8:   actor $PLAYER_ACTOR driving_flying_vehicle
else_jump @Sticky_Camera_0 
wait 0 
   Player.Defined($PLAYER_CHAR)
else_jump @Sticky_Camera_0
0AB1: call_scm_func @Sticky_Camera_3 1 0@ 3@  
0679: put_camera_on_car 0@ with_offset 0.0 1@ 2@ rotation 0.0 0.0 0.0 tilt 3@ switchstyle 2
jump @Sticky_Camera_5

:Sticky_Camera_5
if
0AB0:  key_pressed 221
else_jump @Sticky_Camera_2

:Sticky_Camera_0
Camera.Restore_WithJumpCut
jump @Sticky_Camera_1 

:Sticky_Camera_100
1@ = Car.Model(0@)
07E4: get_model 1@ dimensions_cornerA_to 2@ 3@ 4@ dimensions_cornerB_to 7@ 8@ 9@ 
3@ *= 3.0 
9@ *= 2.0 
0AB2: ret 2 3@ 9@ 

:Sticky_Camera_3
06BE: 1@ = car 0@ y_angle 
1@ *= -1.0 
0AB2: ret 1 1@ 
